package com.itheima.demo03functionalinterface;

import java.lang.reflect.Array;
import java.util.*;
import java.util.function.Supplier;
import java.util.stream.Collectors;

/**
 * @author chenming
 * Date  2023/6/6 17:44
 * @version 1.0
 * description
 */
public class Demo02Supplier {
    // 使用Lambda表达式返回数组元素最大值,获取元素的作用
    public static void main(String[] args) {
        //案例1：数组排序
        Integer[] arr = {11, 99, 88, 77, 22};
        printMax(() -> {
            List<Integer> list = Arrays.asList(arr);
            list.sort(Comparator.comparing(Integer::intValue));
            return list.get(list.size() - 1); //获取最后一个元素的值
        });

        //案例2：数据具体处理返回新的集合数据
        List<Integer> list = makeList(10, () ->
                (int) (Math.random() * 10)
        );

        System.out.println(list.toString());
    }

    //如果接口作为参数，那么必须要重写接口的方法
    public static void printMax(Supplier<Integer> supplier) {
        System.out.println("执行最大值计算");
        int max = supplier.get();
        System.out.println("max = " + max);
    }

    public static List<Integer> makeList(Integer num, Supplier<Integer> supplier) {
        List<Integer> list = new ArrayList<>();
        for (int i = 0; i < num; i++) {
            list.add(supplier.get());
        }
        return list;
    }
}
